ASP.Net অ্যাপ্লিকেশনগুলোতে Authorization একটি গুরুত্বপূর্ণ নিরাপত্তা ব্যবস্থা, যা ব্যবহারকারীর অ্যাক্সেসের অনুমতি নির্ধারণ করে। Role-based এবং Claim-based Authorization হল দুটি প্রধান পদ্ধতি, যা ASP.Net অ্যাপ্লিকেশনগুলোতে ইউজারদের অনুমতি ব্যবস্থাপনা করতে ব্যবহৃত হয়। এখানে, এই দুটি Authorization পদ্ধতি বিস্তারিতভাবে ব্যাখ্যা করা হলো।
Role-based Authorization ব্যবহার করে আপনি ব্যবহারকারীদের নির্দিষ্ট roles এর ভিত্তিতে অ্যাপ্লিকেশনের বিভিন্ন অংশে অ্যাক্সেস প্রদান করতে পারেন। একটি রোল হলো একটি গ্রুপ বা ক্যাটাগরি, যার মধ্যে এক বা একাধিক ব্যবহারকারী থাকতে পারে। একটি ব্যবহারকারী এক বা একাধিক রোলের সদস্য হতে পারে, এবং সেই অনুযায়ী অ্যাপ্লিকেশনের নির্দিষ্ট অংশে তার অ্যাক্সেস নির্ধারণ করা হয়।
Authorize
অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট রোলের জন্য অ্যাক্সেস অনুমোদন করা হয়।ধরা যাক, আপনি দুটি রোল Admin
এবং User
ডিফাইন করতে চান। এই রোলগুলো ব্যবহারকারীকে অ্যাপ্লিকেশনের বিভিন্ন অংশে অ্যাক্সেস দেয়।
[Authorize]
অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট রোলের ব্যবহারকারীদের অ্যাক্সেস প্রদান করা হয়।
[Authorize(Roles = "Admin")]
public IActionResult AdminDashboard()
{
return View();
}
এখানে, কেবলমাত্র Admin
রোলের ব্যবহারকারীরা AdminDashboard
অ্যাকশন মেথডে অ্যাক্সেস পাবে। অন্যথায়, ব্যবহারকারীকে Unauthorized (401) অ্যাক্সেস রেসপন্স প্রদান করা হবে।
Claim-based Authorization আরও বিস্তারিত ও নমনীয় একটি পদ্ধতি, যেখানে claims ব্যবহারকারীর তথ্যের উপর ভিত্তি করে অ্যাক্সেস নির্ধারণ করা হয়। একটি claim হলো একটি বিবরণী বা একক টুকরো ডেটা (যেমন, নাম, ইমেইল, বয়স, অধিকার ইত্যাদি), যা ব্যবহারকারী সম্পর্কিত। Claim-based Authorization আপনাকে নির্দিষ্ট claim এর ভিত্তিতে অ্যাক্সেস কন্ট্রোল করতে সাহায্য করে।
ধরা যাক, আপনি একটি claim তৈরি করতে চান যেখানে ব্যবহারকারীর রোল বা অধিকার সম্পর্কে তথ্য থাকবে। উদাহরণস্বরূপ, আপনি একটি claim তৈরি করতে পারেন যা বলে "HasAdminRights"।
[Authorize(Policy = "HasAdminRights")]
public IActionResult AdminArea()
{
return View();
}
এখানে, Policy
দ্বারা আপনি নির্দিষ্ট claim ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। "HasAdminRights" নামের ক্লেইমটি ব্যবহারকারীর কাছে থাকা উচিত।
বৈশিষ্ট্য | Role-based Authorization | Claim-based Authorization |
---|---|---|
কিভাবে কাজ করে | ব্যবহারকারীর রোলের উপর ভিত্তি করে অ্যাক্সেস নিয়ন্ত্রণ। | ব্যবহারকারীর claims (যেমন, ইমেইল, অ্যাকাউন্ট টিপ, অধিকার) এর উপর ভিত্তি করে অ্যাক্সেস নিয়ন্ত্রণ। |
লচিলতা | কম নমনীয়তা, কেবল রোল ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ। | অধিক নমনীয়তা, claims এর উপর ভিত্তি করে আরও বিস্তারিত নিয়ন্ত্রণ। |
ব্যবহার | সাধারণত বড় এবং সাধারণ অ্যাপ্লিকেশনগুলোর জন্য যেখানে রোল ভিত্তিক অধিকার প্রয়োজন। | যেসব অ্যাপ্লিকেশনে ব্যবহারকারীর বিভিন্ন দিকের উপর ভিত্তি করে অ্যাক্সেস নিয়ন্ত্রণ করা প্রয়োজন। |
সুবিধা | সহজ এবং দ্রুত প্রয়োগযোগ্য। | অধিক কার্যকর এবং উন্নত কাস্টমাইজেশন সক্ষম। |
নিরাপত্তা | কম নিরাপত্তা, কারণ রোলের মধ্যে খুব কম ডেটা থাকে। | অধিক নিরাপত্তা, কারণ claims এ অনেক বিশদ তথ্য থাকতে পারে। |
ASP.Net Core এ Policy-based Authorization ব্যবহার করে, আপনি একটি নির্দিষ্ট authorization policy ডিফাইন করতে পারেন, যা একটি বা একাধিক claims এর উপর ভিত্তি করে কাজ করবে। এটি claim-based Authorization এর উন্নত একটি রূপ।
Startup.cs
ফাইলে একটি নতুন পলিসি তৈরি করা যায়:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("HasAdminRights", policy =>
policy.RequireClaim("Admin", "true"));
});
}
এখানে, একটি পলিসি তৈরি করা হয়েছে যা নিশ্চিত করে যে ব্যবহারকারীর Admin
নামক claim এর মান "true"
হতে হবে।
[Authorize(Policy = "HasAdminRights")]
public IActionResult AdminDashboard()
{
return View();
}
এখানে, পলিসি অনুসারে ব্যবহারকারীকে Admin ক্লেইম থাকতে হবে যাতে তারা AdminDashboard
অ্যাক্সেস করতে পারে।
এটি আপনার অ্যাপ্লিকেশনের নিরাপত্তা এবং ব্যবহারকারীদের অ্যাক্সেস নিয়ন্ত্রণের জন্য অত্যন্ত গুরুত্বপূর্ণ দুটি পদ্ধতি।
Read more